# 【例一】 zip函数能够把多个可迭代对象打包成一个元组构成的可迭代对象，它返回了一个 zip 对象，通过 tuple, list 可以得到相应的打包结果：
L1, L2, L3 = list('abc'), list('wer'), list('mp3')
demo = zip(L1, L2, L3)
print(str(demo))
print(list(demo))
print(tuple(demo))
print(tuple(zip(L1, L2, L3)))

# 【例二】往往会在循环迭代的时候使用到 zip 函数：
L1, L2, L3 = list('abc'), list('wer'), list('mp3')
for i1, i2, i3 in zip(L1, L2, L3):
    print(i1, i2, i3)

# 【例三】enumerate 是一种特殊的打包，它可以在迭代时绑定迭代元素的遍历序号：
for index, value in enumerate('hello'):
    print(index, value)

# 【例四】使用zip完成例三
for index, value in zip(range(len('hello')), 'hello'):
    print(index, value)

# 【例五】当需要对两个列表建立字典映射，需要用到zip对象
value = dict(zip(L1,L2))
print(value)

# 【例六】既然有压缩函数，那么 Python 也提供了 * 操作符和 zip 联合使用来进行解压操作
zipped = list(zip(L1, L2, L3))
print(zipped)
value = list(zip(*zipped))